package org.jeecg.common.fs;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 文件服务管理
 */
public interface IFileServiceApapter {

    /**
     * 获取文件存储类型
     * @return
     */
    public String getStoreType();

    /**
     * 获取组件配置
     * @return
     */
    public default Object getConfig(){
        return null;
    };

    /**
     * 上传文件
     * @param path
     * @param ext 扩展信息，IPFS服务需要指定会员ID
     * @return
     */
    public String uploadFile(String path, FileExtInfo ext);

    /**
     * 上传文件
     * @param is
     * @param ext 扩展信息，IPFS服务需要指定会员ID
     * @return
     */
    public String uploadFile(InputStream is, String fileName, FileExtInfo ext);

    /**
     * 上传文件
     * @param file
     * @param ext 扩展信息，IPFS服务需要指定会员ID
     * @return
     */
    public String uploadFile(File file, FileExtInfo ext);

    /**
     * 上传文件内容
     * @param content
     * @param ext 扩展信息，IPFS服务需要指定会员ID
     * @return
     */
    public String uploadContent(String content, FileExtInfo ext);

    /**
     * 下载文件
     * @param id
     * @param os
     * @param ext 扩展信息，IPFS服务需要指定会员ID
     * @return
     */
    public boolean downloadFile(String id, OutputStream os, FileExtInfo ext);

    /**
     * 下载文件
     * @param id
     * @param path
     * @param ext 扩展信息，IPFS服务需要指定会员ID
     * @return
     */
    public boolean downloadFile(String id, String path, FileExtInfo ext);

    /**
     * 下载文件
     * @param id
     * @param file
     * @param ext 扩展信息，IPFS服务需要指定会员ID
     * @return
     */
    public boolean downloadFile(String id, File file, FileExtInfo ext);

    /**
     * 获取文件流
     * @param id
     * @param ext 扩展信息，IPFS服务需要指定会员ID
     * @return
     */
    public FileDataInfo getFileStream(String id, FileExtInfo ext);

    /**
     * 获取文件内容
     * @param id
     * @param ext 扩展信息，IPFS服务需要指定会员ID
     * @return
     */
    public String getFileContent(String id, FileExtInfo ext);

    /**
     * 通过ID删除文件
     * @param id
     */
    public void deleteFile(String id, FileExtInfo ext);
}
